Modern computing devices may employ multiple processing units to execute various applications, such as media and games apps, as well as provide many services, including cellular telephony and data network communications. For example, a smartphone computing device may have a primary processor (or application processor) for performing operating system routines, a processor for handling incoming cellular modem data, and a graphics processor for rendering video data. A computing device may include a digital signal processor (DSP) that may act as a co-processor of an application processor, typically receiving instructions and workloads from the application processor. The digital signal processor may also share pre-allocated memory with the application processor that may be used with various software applications executing on the application processor, such as applications involving audio (or voice) data. Such audio applications may include codec protocols, digital signal to analog data conversions, and noise/echo cancellations within audio samples/streams.
As programmable computing units, digital signal processors have significant computational capabilities with high computing rates (e.g., millions of instructions per second) with relatively low power consumption rates. However, digital signal processors may be underused by computing device applications due to limitations in inter-processor communications that make utilizing the digital signal processor difficult for application developers. Since digital signal processors typically employ a different operating system than conventional processors, digital signal processors may not share the same function sets/calls as the computing device's application processor. Thus, applications written to execute on the application processor would require special operations in order to call functions that would execute on the digital signal processor. For example, digital signal processor programming may involve highly complicated assembly code programming to manage memory accesses, whereas a median application executing on an application processor may be based in a high-level, object-oriented programming language.
Currently, digital signal processors may be used efficiently by applications that perform large workloads (e.g., audio and voice data operations). However, data transport latencies may be too high to allow for efficient use in other contexts. For example, it may be inefficient to use a digital signal processor to perform small computations when each computation takes a few hundred microseconds. Additionally, memory management between an application processor and a digital signal processor may require different technologies. For example, network style protocols may be used by an application processor to access services on a digital signal processor; however such operations may require extensive out-of-band memory management operations and resources. Due to the different standards and costly latencies, applications programmers generally do not fully utilize digital signal processor resources to provide computational support for applications. Thus, the digital signal processor remains a powerful but underutilized resource in mobile computing devices.